package org.dbp.filtro;

import java.io.Serializable;
/**
 * 
 * Implementa la operaci�n de filtro correspondiente.
 * 
 * @author davidTorre
 *
 * @param <T>
 */
public interface IOperacionFiltrar <T extends Serializable> {

	/**
	 * 
	 * Se encarga de realizar la operación, cuando un elemento cumple con las condiciones de filtrado.
	 * 
	 * @param elemento	Elemento con el que vamos a trabajar.
	 */
	
	public abstract T operacionFiltrado(T elemento);
	/**
	 * 
	 * Se encarga de realizar la operación, cuando un elemento no cumple con las condiciones de filtrado.
	 * 
	 * @param elemento	Elemento con el que vamos a trabajar.
	 * @return	Devolvemos el elemento.
	 */
	public abstract T operacionNoFiltrado(T elemento);
	/**
	 * Se encarga de clonar el elemento.
	 * @param elemento
	 * @return
	 */
	public abstract T clonarElemento(T elemento) throws Exception;
	
}
